package com.ruoyi.training.mapper;

import java.util.ArrayList;
import java.util.List;
import com.ruoyi.training.domain.Registration;
import com.ruoyi.training.dto.ApplicationFormData;
import com.ruoyi.training.dto.registration.RegistrationDto;
import com.ruoyi.training.vo.registration.RegistrationVo;
import com.ruoyi.training.vo.payment.SelectPayVo;
import org.apache.ibatis.annotations.Param;

/**
 * 报名Mapper接口
 * 
 * @author hcc
 * @date 2025-09-17
 */
public interface RegistrationMapper 
{
    /**
     * 查询报名
     * 
     * @param registrationId 报名主键
     * @return 报名
     */
    public RegistrationDto selectRegistrationByRegistrationId(String registrationId);

    public Registration selectByRegistrationId(String registrationId);

    /**
     * 查询报名列表
     * 
     * @param registration 报名
     * @return 报名集合
     */
    public List<Registration> selectRegistrationList(Registration registration);

    /**
     * 新增报名
     * 
     * @param registration 报名
     * @return 结果
     */
    public int insertRegistration(Registration registration);

    /**
     * 修改报名
     * 
     * @param registration 报名
     * @return 结果
     */
    public int updateRegistration(Registration registration);

    /**
     * 删除报名
     * 
     * @param registrationId 报名主键
     * @return 结果
     */
    public int deleteRegistrationByRegistrationId(String registrationId);

    /**
     * 批量删除报名
     * 
     * @param registrationIds 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteRegistrationByRegistrationIds(String[] registrationIds);

    /**
     * 查询报名列表
     *
     * @param registrationVo 报名
     * @return 报名集合
     */
    public List<RegistrationDto> selectList(RegistrationVo registrationVo);
    /**
     * 逻辑删除报名
     */
    public int removeRegistrationByRegistrationIds(String[] registrationIds);
    /**
     * 查询报名数据通过ids
     * @param registrationIds
     * @return
     */
    public List<ApplicationFormData> selectRegistrationByIds(String[] registrationIds);

    // 查询符合条件的报名表
    public List<RegistrationDto> selectPayInvoiceList(@Param("strings") ArrayList<String> strings,@Param("selectPayVo") SelectPayVo selectPayVo);
}
